#include<iostream>
using namespace std;
/*
标准 
template<typename A,typename B>
void print_test(A a,B& os){
	os<<a<<endl;
}
5
int i=0;
print_test(i,cout);

*/

/* 
非模板类型参数,给出的这个例子在没有使用时候没有报错
但是使用的时候无法实例化说明了模板的实例化是在调用执行的
时候进行的。

具体的：编译器直到使用的时候才会为我们的模板生成代码。但真的
就是完全不管吗？

template<typename A>
void garbage(A a){
	dasdasdasdasdasd;
}
编译直接报错，尽管我们没有用这个模板。
说明模板的编译与检查至少分成了两步进行

模板错误发生的三个时候：
编译模板自身的时候：可以进行一些无关与模板类型的错误检查(上面的那个)
使用模板：有限的检查，看看是否提供了足够的类型参数
实例化：实例化之后可能就会真的进行一系列的检查了。实例化一个类
而后进行编译

顺便说一句
引用本身有两个可恶的意外：
int & f=10; 不可以
const int& f=10; 可以

第二个就简单了：多态

template<int N,int M>
void pt(){
	cout<<N<<M<<endl;
}
*/

int main(){
}
